/*20210406
 *
 *	一、所有的操作符：
 *	1、算术操作符：+	-	*	/	%，取模操作符；
 *	2、移位操作符：左移<<	右移>>，分算术右移(在左操作数带符号的情况下右填符号值)和
 *			逻辑右移(右填0)；
 *			有符号值的右移，到底是逻辑还是算术，是又编译器决定的，所以
 *			有符号值的右移，是不可移植的；
 *	3、
 * */

#include "stdio.h"

int main(int argc, char *argv[], char *envp[])
{

	/*	1、左移，就是右边填0，最左边，保留符号位
	 *	2、右移：
	 *		2.1、无符号整型右移，左边填0，右边丢弃
	 *		2.2、有符号整型右移，由编译器决定逻辑右移还是算术右移
	 *			2.2.1、逻辑右移，保留符号位后，左边填0
	 *			2.2.2、算术右移，使用符号位来填充左边
	 *		所以，有符号的数值需要谨慎考虑可移植性！
	 * */
	unsigned int temp1 = 10;
	signed int temp2 = -1;
	temp1 = temp1 << 2;
	temp2 = temp2 << 4;
	printf("[part 5] temp1 = %d\ttemp2 = %d\n", temp1, temp2);
	temp1 = temp1 >> 2;
	printf("[part 5] temp1 = %d\n", temp1);


	return 0;
}
